|
Date : 7 juin 1991 Programme : WELLTRIS Outils : SOFT-ICE Protection : Mot de passe Temps pass� : 5 heures environ Fichier : WELLTRIS.EXE Soci�t� : SPECTRUM HOLOBYTE Divers : Origine : INDONESIE Num�ro : 084 Une protection plutot compliqu�e, j'ai bien trouv� l'endroit ou le programmeur teste les caract�res entr�s mais apr�s cel� il fait une telle mixture que je me perds compl�tement. J'avance donc par petits bouts, �tape par �tape jusqu'� la victoire finale. ( que c'est beau ! ) Tout ce passe en trois �tapes: PRELIMINAIRES: La touche ENTER est test�e en 0C25:05A2 et la routine de la demande du code est appel�e par un CALL en 0C25:1B34 et la moindre modification d'un saut fait se planter le programme avec le message: ERROR: ESCAPE SEQUENCE 0007 Etape 1: -------- J'arrive apr�s de longs tatonnements � trouver ou se fait la compa- raison des caract�res entr�s; B600 3BC2 7402 JZ 60F5 ---> saut qui valide le caract�re compar�. C646E9FF Ce saut invers� donne une r�ponse correct au test de la demande du code. Premier point. Mais le soft se plante avec le m�me message plus loin. Ce programme n'est pas compact� et tout ce que j'ai pu savoir en examinant le fichier avec F3 de NORTON COMMANDER c'est qu'il a �t� assembl� et link� par BORLAND. Etape 2: -------- La suite logique c'est de suivre le soft CALL apr�s CALL pour voir lequel le fait se crasher. On a en gros la disposition suivante: 0C25:1B34 E8.... CALL ----> Demande du code. 0C25:1B37 E8.... CALL ----> Plantage. . 0C25:1B43 . 0C25:1B4A E8DEEB CALL 072B ----> Suite. En d�cortiquant le CALL en 1B37 j'arrive � une s�quence de test dont le saut fait afficher le fameux message. J'annule le test par deux NOP et HOP j'ai l'image d'entr� du jeu ! Je crois que c'est gagn� mais malgr� que toutes les commandes des options du jeu fonctionnent d�s que l'on lance le jeu par lui-m�me avec la barre d'espace, rebelote le message s'affiche. Apparement il reste encore un peu de travail... Dans la s�quence: 833E921004 7CCE ---> 9090 NOP 2 fois. C70692100000 E9C501 Etape 3: -------- C'est dans le CALL qui se trouve en 1B4A que le message fatidique s'affiche maintenant. On part � la chasse... En utilisant la commande T de SOFT-ICE on rentre dans le CALL et on continue par P ( ou F10 ). Dans ce CALL � l'adresse 07CC on trouve un second et un troisi�me CALL dont ce dernier se trouve �tre l'auteur du message. Il est �vident qu'� chaque fois que le message s'affiche il est trop tard; il faut rebooter et recommencer puis � l'endroit fatidique il faut continuer avec la commande T. Je voudrais en profiter ici pour faire quelques louanges aux auteurs de SOFT-ICE; en effet celui-ci permet de BOOTER sans que ce dernier se volatilise de la m�moire et bien mieux le BOOT se fait sous son controle en conservant les points d'arr�ts et toutes les options d�finies sous SOFT-ICE avant le BOOT ! Il est vrai que cel� ne peut ce faire que sur une machine dot�e d'un 80386/80486/80586 qui fonctionne en mode prot�g�. Le 80286 fonctionne �galement en mode prot�g� mais il pr�sente toutefois un l�ger inconv�- nient c'est qu'il ne peut plus revenir en mode r�el une fois qu'il se trouve en mode prot�g� sans lui faire un m�chant RESET HARD. Bien entendu SOFT-ICE se loge dans la m�moire �tendue au-del� des 640k du DOS et que de ce fait tout les programmes se chargent � leurs adresses r�elles sans interf�rer avec le d�buggeur. Revenons en � nos CALL; 0C25:1B4A E8DEEB CALL 072B CS:072B . . . CS:07CC CALL 24FC CS:07CE CALL 0029 ---> C'est celui-ci qui affiche le message. La premi�re id�e ( c'est souvent la bonne ) est d'effacer ce CALL pour voir... Et c'est tout vu, �a marche. N'y croyant pas trop je joue pendant 10 minutes pour tester toutes les fonctions; SAVE, SCORE, SOUND on/off, Difficult� etc... cel� semble OK. Chercher la chaine 50E89FDC4444FF et remplacer E89FDC par 909090. FREDDY |